Skip to main content

sc.table

The Table Module for the computer API!


Functions

merge

sc.table.merge( tbl1, tbl2, fullOverwrite )

Merges 2 tables in 1.

warning

The order that you put the sc.table.merge matters! tbl2 will override/overwrite anything inside tbl1!

Arguments:

  • tbl1 [ table ] The 1st table
  • tbl2 [ table ] The 2nd table
  • fullOverwrite [ boolean? ] This will make it so the merged value will be always from tbl2. Will not care about anything else. The default is false

Returns:

  • tbl [ table ] The merged table.

clone

sc.table.clone( tbl )

Clones a table

This function doesn't really need to exist

This function is utterly unnecessary but in SOME situations is useful. It does create a new table but it's so easy to implement that I don't think it should deserve to have its function.

Guess why

Click this dropdown to see why its unnessorary

This is all the code the function uses...

---Clones a table
---@param tbl table The table to clone
---@return table clonedTable The cloned table
sc.table.clone = function (tbl)
    assert(type(tbl) == "table", "Expected table, got "..type(tbl).." instead.") -- Отслеживание ошибки

    return unpack({tbl})
end

It's too little amount of code! I could do it in different ways but those have downsides! So this is the easiest thing we can do.

Arguments:

  • tbl [ table ] The table to clone.

Returns:

  • [ table ] The cloned table.

toString

sc.table.toString( tbl )

Converts a table to the same thing but as a string. If you were to try doing this with Lua's tostring. You would just get "table: 00A59928". Not the actual contents of the table itself!

Arguments:

  • tbl [ table ] The table.

Returns:

  • [ string ] The converted lua table is a string.

getItemAt

sc.table.getItemAt( tbl, index )

Gets an item from a table via the index. Unlike doing tbl[index]. This will not care if the index numbers aren't in order.

-- This is in our actual todo
local todo = {
[25] = "Add glass support for camera"
[69] = "Add another parameter for speakers. Allows you to add such as the \"wind\" parameter to the sound effect"
[4825] = "Add 512x512 and 1024x1024 displays for 3x3, 2x2 and 1x1 (Im going to add this no matter what :) )"
}

local lastTodoGood = sc.table.getItemAt(todo, 3) -- Works! Returns item of the index of 4825. Since it's the 3rd element in the table
local lastTodoBad = todo[3] -- Doesn't Work! Tries grabbing an element at index 3 but that doesn't exist! so this is nil!

print("lastTodoGood: "..tostring(lastTodoGood))
print("lastTodoBad: " ..tostring(lastTodoBad ))

You see that tbl[index] would error out but not sc.table.getItemAt

Arguments:

  • tbl [ table ] The table
  • index [ integer ] The item to get.

Returns:

  • [ any ] Whatever data it has received from the index.

getTableSize

sc.table.getTableSize( tbl )

Gets all items via a ipairs loop.

Unlike doing #tbl, If the indexing was weird, #tbl would return 0. This function does not care if the indexing system is weird. Will give you the same result as if the indexing system was normal.

Arguments:

  • tbl [ table ] The table.

Returns:

  • [ integer ] The total items in the table.

shiftTableIndexes

sc.table.shiftTableIndexes( tbl, shiftAmount )

Shifts list's indexes.

Arguments:

  • tbl [ table ] table The table.
  • shiftAmount [ integer ] integer The amount to shift.

Returns:

  • [ table ] The shifted table.

isDictionary

sc.table.isDictionary( tbl )

Returns true if your table is a dictionary.

Arguments:

  • tbl [ table ] The table.

Returns:

  • [ boolean ] Whether your table is a dictionary or not.

numberlyOrderTable

sc.table.numberlyOrderTable( tbl )

Orders the list to be 1 to table size.

Arguments:

  • tbl [ table ] The table to check.

Returns:

  • [ table ] The organized table.

valueExistsInList

sc.table.valueExistsInList( tbl, item )

Returns true if an item is found in a list.

Arguments:

  • tbl [ table ] The table to check.
  • item [ any ] The item to try finding the table. (Cannot be nil!).

Returns:

  • [ boolean ] If it was found or not.